//主函数
package com.chinasofti.comparble3;

import java.util.*;
/* 学生总成绩排序，总分相同就按照姓名来排*/
public class Test02 {
    public static void main(String[] args) {
//        Scanner sc=new Scanner(System.in);
//        //创建集合对象
//        TreeSet<Student> ts = new TreeSet<Student>(new Comparator<Student>() {
//            @Override  //重写比较器排序函数
//            public int compare(Student s1, Student s2) {
//                int result = (s2.getsum())-(s1.getsum());//总分按照高低排序
//                result = result == 0 ? s2.getChinese() - s1.getChinese() : result;//总分一样，按照语文成绩高低排序
//                result = result == 0 ? s2.getName().compareTo(s1.getName()) : result;//都一样按照姓名字典排序
//                return result;
//            }
//        });
//        Student s1=new Student("张三",80,90,60);
//        Student s2=new Student("李四",70,89,60);
//        Student s3=new Student("王五",65,78,60);
//        //将学生对象加入到集合中去
//        ts.add(s1);
//        ts.add(s2);
//        ts.add(s3);
        Scanner sc = new Scanner(System.in);
        //创建集合对象TreeSet
        TreeSet<Student> treeSet = new TreeSet<>(new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                int result = o1.getsum()-o2.getsum();//比较总分数进行排序
                result = result == 0 ? o2.getChinese() - o1.getChinese() : result;//总分相同比较语文分数进行排序
                result = result == 0 ? o2.getMath() - o1.getMath() : result;//语文分数相同比较数学分数进行排序，
                //因成绩只分为三种所以不考虑比较英语成绩
                result = result == 0 ? o2.getName().compareTo(o1.getName()) : result;//数学分数相同调用compareTo比较名字首字母进行排序
                return result;
            }
        });
        Student student1 = new Student("张三",90,80,60);
        Student student2 = new Student("李四",90,85,65);
        Student student3 = new Student("王五",80,70,50);
        treeSet.add(student1);
        treeSet.add(student2);
        treeSet.add(student3);
        for (Student str : treeSet){
            System.out.println(str.getName()+str.getChinese()+str.getMath()+str.getEnglish());
        }


//        for(int i=0;i<1;i++){//自己键盘输入。
//            System.out.print("请输入学生姓名");
//            String name1=sc.next();
//            System.out.print("请输入学生语文成绩");
//            int chinese1=sc.nextInt();
//            System.out.print("请输入学生数学成绩");
//            int math1=sc.nextInt();
//            System.out.print("请输入学生英语成绩");
//            int english1=sc.nextInt();
//            Student s=new Student();
//            s.setName(name1);
//            s.setChinese(chinese1);
//            s.setMath(math1);
//            s.setEnglish(english1);
//            ts.add(s);
//        }
//        for(Student s:ts){//重写comparable，0是一样的，1是按照给的顺序写，-1是倒着来
//            System.out.println(s.getName()+","+s.getChinese()+","+s.getMath()+","+s.getEnglish()+","+s.getsum());
//        }

    }
}

